package ifosup.thibault.thread;

public class MyRunnable implements Runnable{
	
	int i =0;
	
	public void run()
	{
		while(true)
		{
			increment();
			try {
				sleept();//wait fait la meme chose mais lache la main, le lock
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			decrement();
			System.out.println(this.i);
			System.out.println(Thread.currentThread());

		}
	}


	synchronized void increment()//a seul thread peut rentrer dans la methode
	//pour utiliser un autre semaphore on peut ecire synchronized(this){bloc}en attendant que le semaphore soit libere
	//exemple methode sensible avec un seul thread pouvant atteindre une methode, objet statique, donc forcement un objet ...
	//attention au deadlock, on prend un locker 'static' ou pas (selon l'instanciage)
	{i++;}
	synchronized void sleept() throws InterruptedException
	{Thread.sleep(100);}
	synchronized void decrement()
	{i--;}	
	

}
